home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / grline.c < prev    next >
Text File  |  1985-06-03  |  896b  |  51 lines

  1. #define abs(x) ((x)<0?-(x):(x))
  2. #define sign(x) ((x)<0?-1:1)
  3. #define TRUE 1
  4. struct point
  5.  int x;
  6.  int y;
  7. };
  8. int grline(start,end,color)
  9.  struct point *start, *end;
  10.  int color;
  11. {
  12.     int x,y,xt,yt,r,delx,dely,dx,dy;
  13.     x=start->x;
  14.     y=start->y;
  15.     xt=end->x;
  16.     yt=end->y;
  17.     r=0;
  18.     while(TRUE)
  19.     {
  20.     setbit(x,y);
  21.     delx=xt-x;
  22.     dely=yt-y;
  23.     dx=abs(delx);
  24.     dy=abs(dely);
  25.     if(dx>=dy)
  26.     {
  27.         if(x==xt)
  28.         return;
  29.         x+=sign(delx);
  30.         r+=dy;
  31.         if(r>=(dx-r))
  32.         {
  33.         y+=sign(dely);
  34.         r-=dx;
  35.         }
  36.     }
  37.     else
  38.     {
  39.         if(y==yt)
  40.         return;
  41.         y+=sign(dely);
  42.         r+=dx;
  43.         if(r>=(dy-r))
  44.         {
  45.         x+=sign(delx);
  46.         r-=dy;
  47.         }
  48.     }
  49.     }
  50. }